package org.gd.hellojavacore.patterns.lazyinitialization;

class SomeObject {
    static SomeObject INSTANCE = null;
    String msg;

    private SomeObject() {
        msg = "Instance of SomeObject have been created.";
    }

    public String toString() {
        return msg;
    }

    // Метод возвращает экземпляр SomeObject, при этом он
    // создаёт его, если тот ещё не существует
    public static SomeObject getObject() {
        if (INSTANCE == null) {
            synchronized (SomeObject.class) {
                if (INSTANCE == null) {
                    INSTANCE = new SomeObject();
                }
            }
        }
        return INSTANCE;
    }
}
